#pragma once
#include <math.h>
#include "qmc.h"

typedef enum _WaveFunctionEnum
{
  kWaveFunctionNone = -1,
  kWaveFunctionDefault,
  kWaveFunctionMcMillan,
  kWaveFunctionCount,
}WaveFunctionEnum;

//**********************
//McMillan Wave function
//**********************
//Explicit parameters
extern double alphaMcMillan;
extern double nu;
extern double b;

//Derrived parameters
extern double c00;
extern double c01;
extern double c02;
extern double c10;
extern double c11;
extern double c12;
extern double c20;
extern double c21;
extern double c22;

//*********************
//Default wave function
//*********************
extern double p0;
extern double p1;
extern double p2;
extern double p3;
extern double p4;

//Parameters of potential energy
extern double rm;
extern double A;
extern double alphaPotential;
extern double beta;
extern double epsilon;
extern double c6_pot;
extern double c8_pot;
extern double c9_pot;
extern double c10_pot;
extern double D;

void setWaveFunction(WaveFunctionEnum wave);
WaveFunctionEnum getWaveFunction();
void derriveParameters();
